Skip to content

feat: enhanced UX with per-event messages and file handling#148

Open
Fr4nzz wants to merge 1 commit intoRichardAtCT:mainfrom
Fr4nzz:feat/enhanced-ux
Open

feat: enhanced UX with per-event messages and file handling#148
Fr4nzz wants to merge 1 commit intoRichardAtCT:mainfrom
Fr4nzz:feat/enhanced-ux

Conversation

@Fr4nzz
Copy link
Copy Markdown

@Fr4nzz Fr4nzz commented Mar 15, 2026

Summary

  • Per-event tool messages: Each tool call (Read, Bash, Grep, etc.) gets its own message with icon, instead of cramming everything into one progress message
  • Extended thinking: Show Claude's ThinkingBlocks as 🧠 messages
  • Intermediate reasoning: Show visible text between tool calls as 💬 messages
  • /cleanup command: Delete tool/thinking messages from the last response on demand
  • Progress timer: ⏳ Working... (Xs) updates every 3 seconds, finalizes as ✅ Done (Xs)
  • File handling: Rename send_image_to_usersend_file_to_user to accept any file type
  • Upload handling: Download files to disk and pass path to Claude (instead of base64)
  • Security: Skip file extension whitelist when DISABLE_SECURITY_PATTERNS=true
  • HTML fallback: Strip tags in plain text fallback instead of showing raw <b> tags
  • _send_formatted_message helper: Consistent HTML-with-fallback across all handlers

Test plan

  • Send a text message and verify tool calls appear as individual messages
  • Verify 🧠 and 💬 messages appear during processing
  • Use /cleanup to delete tool messages after response
  • Verify progress shows elapsed time and finalizes as ✅ Done
  • Upload a file and verify Claude can read it
  • Send an image and verify Claude receives the file path

🤖 Generated with Claude Code

…handling

- Show per-event tool messages (📖💻🔧) instead of one progress message
- Show extended thinking as 🧠 messages (ThinkingBlocks)
- Show intermediate reasoning as 💬 messages
- Add /cleanup command to delete tool/thinking messages
- Progress timer: ⏳ Working... (Xs) → ✅ Done (Xs)
- Rename send_image_to_user → send_file_to_user (any file type)
- Download uploads to disk and pass path to Claude
- Skip file extension checks when security patterns disabled
- HTML fallback strips tags instead of showing raw tags
- _send_formatted_message helper with consistent error handling
@RichardAtCT
Copy link
Copy Markdown
Owner

Superseded by PR #152 — recommend closing

Hey @Fr4nzz — thanks for the work here, but before diving into a full technical review I want to flag something important.

This PR appears to be superseded by your own PR #152 ("feat: streaming drafts, rich formatting, follow-up interrupts"). The overlap is substantial:

Feature This PR (#148) PR #152
Per-event tool messages
ThinkingBlock display
Intermediate reasoning messages
/cleanup command
Progress timer
File handling refactor
Streaming drafts
Rich formatting
Follow-up interrupts

PR #152 is a strict superset: everything here (+1057/-485) vs. this PR (+640/-398). Both modify the same core files (orchestrator.py, sdk_integration.py, validators.py), so these two PRs cannot both be merged — they will have significant conflicts regardless of order.

On the security change specifically: The DISABLE_SECURITY_PATTERNS=true flag bypassing the file extension whitelist concerns me regardless of which PR lands it. That's a meaningful security regression gated only on an env var — worth a dedicated discussion before it's merged in either PR.

Recommendation: Close this PR in favour of #152, or explicitly clarify whether there's functionality here that didn't make it into #152. If there's unique work (the upload-to-disk path handling looks slightly different), port it as a follow-up or note it in #152's thread.

Also worth noting: both PRs touch orchestrator.py heavily alongside PRs #160 and #165 — the rebase surface is already large. The sooner one of these is closed, the less pain for everyone.

Friday, AI assistant to @RichardAtCT (posted as @RichardAtCT — FridayOpenClawBot access pending)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants